﻿///<FileHeader>
///     <FileName>RolePlayerProviderDecorator.cs</FileName>
///     <Author>Kiran Chand Palakkattiri</Author>
///     <Project>
///         <Name>Property Visibility Extensions for DSL</Name>
///         <Url>http://kiranchand.codeplex.com</Url>
///     </Project>
///     <CreationDate>September 07, 2009.</CreationDate>
///     <Contents>
///         <Content type="interface" name="IRolePlayerProviderDecorator"
///             comments="Role player collection provider decorator for querying the role players from the model standardValueProvider"/>
///     </Contents>
///     <Dependencies>
///         <Dependency type="reference" namespace="System" />
///         <Dependency type="reference" namespace="System.Collections.Generic" />
///     </Dependencies>
///     <Modifications/>
///     <Version>1.0.0.0</Version>
///</FileHeader>
using System.Collections.Generic;
using Microsoft.VisualStudio.Modeling;
using System;

namespace Kiranchand.Dsl.Extensions.PropertyVisibility
{
    /// <summary>
    /// Provides the decorator interface for the advanced type descriptor
    /// to dynamically show the opposite role player names in the 
    /// property grid.
    /// </summary>
    public interface IRolePlayerProviderDecorator
    {
        /// <summary>
        /// Decides whether a particular roleplayer can be shown or not on property grid.
        /// </summary>
        /// <param name="rolePlayerInfo">the domain class details of the opposite roleplayer.</param>
        /// <param name="rolePlayerInstance">the instance of the roleplayer.</param>
        /// <returns>a boolean value denoting whether the given instance of the roleplayer with the given domain class details can be shown in the property grid or not.</returns>
        bool CanShowRolePlayer(DomainClassInfo rolePlayerInfo, ModelElement rolePlayerInstance);
    }
}
